package action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import common.DelegaServicos;
import common.Suporte;

import entity.Cidade;
import entity.Endereco;
import entity.PessoaFisica;

@SuppressWarnings("serial")
public class CadastroPessoaCorretor extends Suporte{

	private String nomeUsuario;
	private String loginUsuario;
	private String senhaUsuario;
	private String email;
	private String telefone;
	private Endereco endereco;
	private String cpf;
	private String creci;
	private String cidadeId;
	private Cidade cidade;
	private List<Cidade> listaCidades;
	private String logradouro;
	private String cep;
	private String bairro;
	private String complemento;
	private String numero;

	public String execute() throws Exception {
		
		DelegaServicos delegador = new DelegaServicos();
		
		this.listaCidades = new ArrayList<Cidade>();
		this.listaCidades = delegador.getCidadeController().listaCidades();
		
		if(isPostMethod()) {
			
			PessoaFisica pessoa = new PessoaFisica();
			Endereco endereco = new Endereco();
			
			if(this.nomeUsuario.trim().length() == 0){
				addActionError(getText("username.required"));
				return INPUT;
			}
			
			if(this.loginUsuario.trim().length() == 0){
				addActionError(getText("login.required"));
				return INPUT;
			}
			
			if(this.senhaUsuario.trim().length() == 0){
				addActionError(getText("password.required"));
				return INPUT;
			}
			
			if(this.email.trim().length() == 0){
				addActionError(getText("email.required"));
				return INPUT;
			}
			
			if(this.telefone.trim().length() == 0){
				addActionError(getText("telefone.required"));
				return INPUT;
			}
			
			if(this.cpf.trim().length() == 0){
				addActionError(getText("cpf.required"));
				return INPUT;
			}
			
			if(this.creci.trim().length() == 0){
				addActionError(getText("creci.required"));
				return INPUT;
			}
			
			if(this.cidadeId.trim().length() == 0){
				addActionError(getText("cidade.required"));
				return INPUT;
			}
			
			if(this.logradouro.trim().length() == 0){
				addActionError(getText("logradouro.required"));
				return INPUT;
			}
			
			if(this.bairro.trim().length() == 0){
				addActionError(getText("bairro.required"));
				return INPUT;
			}
			
			if(this.complemento.trim().length() == 0){
				addActionError(getText("complemento.required"));
				return INPUT;
			}
			
			if(this.numero.trim().length() == 0){
				addActionError(getText("numero.required"));
				return INPUT;
			}
			
			pessoa.setNome(this.nomeUsuario);
			pessoa.setLoginPessoa(this.loginUsuario);
			pessoa.setSenha(this.senhaUsuario);
			pessoa.setEmail(this.email);
			pessoa.setTelefone(this.telefone);
			pessoa.setCpf(this.cpf);
			pessoa.setCreci(this.creci);
			pessoa.setDataRegistro(new Date());
			
			Cidade cidade = delegador.getCidadeController().retornaCidade(Integer.parseInt(this.cidadeId));
					
			endereco.setCidade(cidade);
			endereco.setLogradouro(this.logradouro);
			endereco.setCep(this.cep);
			endereco.setBairro(this.bairro);
			endereco.setComplemento(this.complemento);
			endereco.setNumero(Integer.parseInt(this.numero));
			
			delegador.getEnderecoController().cadastra(endereco);
			
			pessoa.setEndereco(endereco);
			
			delegador.getPessoaController().cadastra(pessoa);
			
			return SUCCESS;
			
		} else {
			
			return INPUT;
		}
		
	}
	
	public String getNomeUsuario() {
		return nomeUsuario;
	}
	public void setNomeUsuario(String nomeUsuario) {
		this.nomeUsuario = nomeUsuario;
	}
	public String getLoginUsuario() {
		return loginUsuario;
	}

	public void setLoginUsuario(String loginUsuario) {
		this.loginUsuario = loginUsuario;
	}
	public String getSenhaUsuario() {
		return senhaUsuario;
	}
	public void setSenhaUsuario(String senhaUsuario) {
		this.senhaUsuario = senhaUsuario;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
	public String getCreci() {
		return creci;
	}

	public void setCreci(String creci) {
		this.creci = creci;
	}
	
	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public String getCidadeId() {
		return cidadeId;
	}

	public void setCidadeId(String cidadeId) {
		this.cidadeId = cidadeId;
	}

	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}
	
	public List<Cidade> getListaCidades() {
		return listaCidades;
	}

	public void setListaCidades(List<Cidade> listaCidades) {
		this.listaCidades = listaCidades;
	}
	
	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}
}